import requests
import json
from bs4 import BeautifulSoup
import time
import random
url = "https://search.qianlima.com/api/v1/website/search"
webhook_url='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=76aa11f3-64ce-430f-9f3c-b44c2eedae8e'
# 请求参数
params = {
    "filtermode": "2",
    "timeType": "2",
    "areas": "1316",
    "types": "0",
    "searchMode": "0",
    "keywords": "招标代理",  # URL解码后的关键词
    "beginTime": "",
    "endTime": "",
    "isfirst": "false",
    "currentPage": "1",
    "numPerPage": "20"
}

# 请求头
headers = {
    "Accept": "*/*",
    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
    "Connection": "keep-alive",
    "Content-Type": "application/x-www-form-urlencoded",
    "Origin": "https://search.qianlima.com",
    "Referer": "https://search.qianlima.com/?q=%E6%8B%9B%E6%A0%87%E4%BB%A3%E7%90%86",
    "Sec-Fetch-Dest": "empty",
    "Sec-Fetch-Mode": "cors",
    "Sec-Fetch-Site": "same-origin",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 Edg/136.0.0.0",
    "sec-ch-ua": '"Chromium";v="136", "Microsoft Edge";v="136", "Not.A/Brand";v="99"',
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": '"Windows"'
}

# Cookie
cookies = {
    "seo_refUrl": "http://www.directlyaccess.com",
    "seo_curUrl": "http://www.qianlima.com/common/detail.jsp",
    "qlm_visitor_id": "2111637194",
    "seo_intime": "2024-08-28 11:26:27",
    "guest_id": "ab77c52f-167d-4214-8034-26345924a433",
    "Hm_lvt_0a38bdb0467f2ce847386f381ff6c0e8": "1742264719",
    "HWWAFSESID": "406f2825554b5cbdbd",
    "HWWAFSESTIME": "1748913288461",
    "first_login_open": "1",
    "Hm_lvt_5dc1b78c0ab996bd6536c3a37f9ceda7": "1747703151,1748241720,1748484891,1748913304",
    "Hm_lpvt_5dc1b78c0ab996bd6536c3a37f9ceda7": "1749087996"
}




def fetch_result_dict(url, headers, params, cookies):
    """
    发送POST请求并解析响应，生成包含标题和链接的结果字典

    :param url: 请求的目标URL
    :param headers: 请求头
    :param params: 请求参数
    :param cookies: 请求Cookies
    :return: 包含popTitle和url的字典
    """
    try:
        response = requests.post(url, headers=headers, params=params, cookies=cookies)
        response.raise_for_status()  # 检查请求是否成功
        data = json.loads(response.text)

        result_dict = {}
        for item in data.get('data', {}).get('data', []):
            result_dict[item['popTitle']] = item['url']

        return result_dict

    except requests.RequestException as e:
        print(f"请求失败: {e}")
        return {}
    except json.JSONDecodeError:
        print("响应内容不是有效的JSON")
        return {}
    except KeyError:
        print("响应内容缺少预期字段 'data'")
        return {}
# result_dict = fetch_result_dict(url, headers=headers, params=params, cookies=cookies)
# print(result_dict)

#result_dict={'徐州市铜山区山林资源保护红线规划（2011版）修编项目招标代理': 'https://www.qianlima.com/bid-524249457.html', '关于【沛县栖山镇王店中学食堂劳务服务承包】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524201654.html', '关于【沛县民政局政府购买农村分散供养特困人员照料护理服务】【公开竞价】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524193805.html', '关于【徐州经济技术开发区大庙街道苏果路下水管道改造工程】【随机选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524171744.html', '沛县公安局超市招租采购项目委托第三方招标代理采购': 'https://www.qianlima.com/bid-524135516.html', '关于【沛县公安局餐饮服务外包项目委托第三方招标代理】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127586.html', '关于【云龙区教育局学校食堂劳务委托招标】【公开竞价】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127143.html', '关于【沛县河口中学食堂劳务服务】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127638.html', '关于【沛县龙城小学食堂劳务】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127602.html', '关于【学校厕所改造提升工程】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127599.html', '关于【南四湖流域沛县大屯港河水环境综合治理工程项目】【邀请选取】【工程建设项目招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127585.html', '关于【徐州市贾汪区城市管理局徐州市贾汪区居民小区生活垃圾分类运营项目】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127587.html', '邳州市农业农村局农机应急作业服务队建设项目委托第三方机构招标代理': 'https://www.qianlima.com/bid-523980461.html', '丰县欢口镇2025年度幸福小院招标代理项目需求书 （丰县）': 'https://www.qianlima.com/bid-523959357.html', '铜山区福乐园、馨乐园小区住宅房地产价值咨询评估项目委托招标代理 （铜山区）': 'https://www.qianlima.com/bid-523959491.html', '丰县顺河中学食堂劳务服务项目招标代理 （丰县）': 'https://www.qianlima.com/bid-523959354.html', '新沂市高流粮食物流园建设项目（二期）工程招标代理需求 （新沂市）': 'https://www.qianlima.com/bid-523959363.html', '邳州市教育局公开遴选餐饮公司服务项目招标代理 （邳州市）': 'https://www.qianlima.com/bid-523959478.html', '丰县城市记忆更新设计方案编制招标代理 （丰县）': 'https://www.qianlima.com/bid-523959479.html', '关于【徐州市沛县栖山镇中心小学食堂劳务服务承包招标代理】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-523953358.html'}



# 检查网页内容是否包含“中介”
def check_page_for_keyword(url, keyword="中介"):
    try:
        response = requests.get(url, timeout=10, headers=headers, cookies=cookies)
        response.raise_for_status()
        soup = BeautifulSoup(response.text, 'html.parser')
        return keyword in soup.get_text()
    except requests.RequestException as e:
        print(f"请求 {url} 时发生错误: {e}")
        return False

def after_filter(result_dict):
    # 遍历字典，检查每个网页
    for title, url in list(result_dict.items()):
        if check_page_for_keyword(url):
            #print(f"删除包含关键词的条目: {title} ({url})")
            del result_dict[title]

        # 每次循环后休息 60 秒（或随机时间）
        #time.sleep(5)  # 可替换为 time.sleep(random.uniform(10, 60)) 更加隐蔽


    return result_dict




# 推送消息到企业微信
def push_to_wecom(message_dict, webhook_url):
    """
    将过滤后的结果推送至企业微信群机器人

    :param message_dict: 要推送的字典数据，格式 {标题: 链接}
    :param webhook_url: 企业微信机器人的 Webhook 地址
    :return: 推送是否成功
    """
    if not message_dict:
        print("没有数据可推送")
        return False

    # 构造消息内容
    content = "【过滤后的招标信息】\n\n"
    for title, url in message_dict.items():
        content += f"标题：{title}\n链接：{url}\n\n"

    # 限制内容长度（企业微信有长度限制）
    if len(content) > 2048:
        content = content[:2045] + "..."

    data = {
        "msgtype": "text",
        "text": {
            "content": content,
            "mentioned_list": []  # 可选：需要提醒的成员列表，如 ["@all", "zhangsan"]
        }
    }

    try:
        response = requests.post(webhook_url, data=json.dumps(data))
        result = response.json()
        if result.get("errcode") == 0:
            print("推送成功")
            return True
        else:
            print(f"推送失败：{result}")
            return False
    except Exception as e:
        print(f"推送异常：{e}")
        return False
while(1):
    #result_dict = fetch_result_dict(url, headers=headers, params=params, cookies=cookies)
    result_dict={'徐州市铜山区山林资源保护红线规划（2011版）修编项目招标代理': 'https://www.qianlima.com/bid-524249457.html', '关于【沛县栖山镇王店中学食堂劳务服务承包】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524201654.html', '关于【沛县民政局政府购买农村分散供养特困人员照料护理服务】【公开竞价】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524193805.html', '关于【徐州经济技术开发区大庙街道苏果路下水管道改造工程】【随机选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524171744.html', '沛县公安局超市招租采购项目委托第三方招标代理采购': 'https://www.qianlima.com/bid-524135516.html', '关于【沛县公安局餐饮服务外包项目委托第三方招标代理】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127586.html', '关于【云龙区教育局学校食堂劳务委托招标】【公开竞价】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127143.html', '关于【沛县河口中学食堂劳务服务】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127638.html', '关于【沛县龙城小学食堂劳务】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127602.html', '关于【学校厕所改造提升工程】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127599.html', '关于【南四湖流域沛县大屯港河水环境综合治理工程项目】【邀请选取】【工程建设项目招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127585.html', '关于【徐州市贾汪区城市管理局徐州市贾汪区居民小区生活垃圾分类运营项目】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-524127587.html', '邳州市农业农村局农机应急作业服务队建设项目委托第三方机构招标代理': 'https://www.qianlima.com/bid-523980461.html', '丰县欢口镇2025年度幸福小院招标代理项目需求书 （丰县）': 'https://www.qianlima.com/bid-523959357.html', '铜山区福乐园、馨乐园小区住宅房地产价值咨询评估项目委托招标代理 （铜山区）': 'https://www.qianlima.com/bid-523959491.html', '丰县顺河中学食堂劳务服务项目招标代理 （丰县）': 'https://www.qianlima.com/bid-523959354.html', '新沂市高流粮食物流园建设项目（二期）工程招标代理需求 （新沂市）': 'https://www.qianlima.com/bid-523959363.html', '邳州市教育局公开遴选餐饮公司服务项目招标代理 （邳州市）': 'https://www.qianlima.com/bid-523959478.html', '丰县城市记忆更新设计方案编制招标代理 （丰县）': 'https://www.qianlima.com/bid-523959479.html', '关于【徐州市沛县栖山镇中心小学食堂劳务服务承包招标代理】【邀请选取】【政府采购招标代理】中介服务机构的公告': 'https://www.qianlima.com/bid-523953358.html'}
    readyToPushWechatMessage = after_filter(result_dict)
    push_to_wecom(readyToPushWechatMessage, webhook_url)
    #push_to_wecom("开始休眠....", webhook_url)
    # 休眠 48 小时
    time.sleep(172800)
    #push_to_wecom("结束休眠", webhook_url)

